// src/store/app.js
import { defineStore } from "pinia";
import { ref, watch } from "vue";

// 默认配置
const defaultSettings = {
  Title: "vcool管理系统",         // 系统标题，显示在浏览器标签和Logo旁
  HiddenSideBar: false,           // 是否隐藏侧边栏，true: 隐藏，false: 显示
  MultiTagsCache: true,          // 是否缓存多标签页内容，true: 开启缓存，false: 不缓存（切换标签时重新加载）
  KeepAlive: true,                // 是否启用页面缓存（KeepAlive），true: 缓存页面状态，false: 每次都重新渲染
  Layout: "vertical",             // 布局模式，vertical: 左侧菜单，horizontal: 顶部菜单，mix: 混合模式（左侧一级+右侧二级）
  Grey: false,                    // 是否启用灰色模式（网站变灰），true: 启用，false: 禁用
  Weak: false,                    // 是否启用色弱模式（辅助功能），true: 启用，false: 禁用
  HideTabs: false,                // 是否隐藏标签页，true: 隐藏，false: 显示
  SidebarStatus: true,            // 侧边栏展开状态，true: 展开，false: 收起
  EpThemeColor: "#409EFF",        // Element Plus 主题色（主色调）
  ShowBreadcrumb: true            // 是否显示面包屑导航，true: 显示，false: 隐藏
};

export const useAppStore = defineStore("app", () => {
  // 从 localStorage 读取配置，如果没有则使用默认配置
  const loadSettings = () => {
    const saved = localStorage.getItem('app-settings');
    if (saved) {
      try {
        return { ...defaultSettings, ...JSON.parse(saved) };
      } catch (e) {
        console.error('加载配置失败:', e);
        return defaultSettings;
      }
    }
    return defaultSettings;
  };

  // 初始化配置
  const settings = ref(loadSettings());

  // 兼容旧的 sidebar 结构
  const sidebar = ref({
    opened: settings.value.SidebarStatus,
  });

  // 监听配置变化，自动保存到 localStorage
  watch(settings, (newSettings) => {
    localStorage.setItem('app-settings', JSON.stringify(newSettings));
    // 同步 sidebar 状态
    sidebar.value.opened = newSettings.SidebarStatus;
  }, { deep: true });

  // 切换侧边栏
  const toggleSidebar = () => {
    settings.value.SidebarStatus = !settings.value.SidebarStatus;
    sidebar.value.opened = settings.value.SidebarStatus;
  };

  // 更新单个配置
  const updateSetting = (key, value) => {
    settings.value[key] = value;
  };

  // 批量更新配置
  const updateSettings = (newSettings) => {
    Object.assign(settings.value, newSettings);
  };

  // 重置为默认配置
  const resetSettings = () => {
    settings.value = { ...defaultSettings };
    localStorage.removeItem('app-settings');
  };

  return {
    sidebar,
    settings,
    toggleSidebar,
    updateSetting,
    updateSettings,
    resetSettings,
  };
});
